MODULES.CONF(5) | File Formats Manual | MODULES.CONF(5) |
NOM¶
modules.conf - Fichier de configuration des modules du noyau Linux
DESCRIPTION¶
Le comportement de modprobe(8) (et depmod(8)) peut être modifié par le fichier de configuration (optionnel) /etc/modules.conf.
Le fichier de configuration est constitué d'un ensemble de
lignes.
Toutes les lignes vides et tous les caractères d'une ligne après
un « # » sont ignorés.
Un « \ » en fin de ligne est ignoré ainsi
que le saut de ligne suivant, la ligne se prolonge donc à la
suivante.
Les lignes restantes doivent respecter les formats suivant :
[add] above module liste_de_modules
alias nom_alias résultat
[add] below module liste_de_modules
define VARIABLE MOT
depfile=UN_CHEMIN
else
elseif EXPRESSION
endif
if EXPRESSION
include CHEMIN_VERS_UN_FICHIER_DE_CONFIGURATION
insmod_opt=OPTIONS_GÉNÉRIQUES_POUR_INSMOD
install module commande ...
keep
[add] options module OPTIONS_SPÉCIFIQUES_AU_MODULE
path=UN_CHEMIN
path[ÉTIQUETTE]=UN_CHEMIN
generic_stringfile=UN_CHEMIN
pcimapfile=UN_CHEMIN
isapnpmapfile=UN_CHEMIN
usbmapfile=UN_CHEMIN
parportmapfile=UN_CHEMIN
ieee1394mapfile=UN_CHEMIN
[add] probe nom liste_de_modules
[add] probeall nom liste_de_modules
prune nom_de_fichier
post-install module commande ...
post-remove module commande ...
pre-install module commande ...
pre-remove module commande ...
remove module commande ...
persistdir nom_de_répertoire
Tous les arguments d'une directive sont évalués en prenant en compte les méta-caractères du shell, ce qui signifie que les *, ? et les commandes entre « ` » par exemple peuvent être utilisés.
DANGER : Appliquer l'expansion du shell à une entrée utilisateur comporte un risque majeur pour la sécurité. Le code modutils n'applique cette expansion que pour les données de confiance, c'est à dire uniquement pour les données du fichier de configuration. Et même cela présuppose qu'un utilisateur ne peut pas lancer modprobe en root en fournissant son propre fichier de configuration. Les programmes (y compris le noyau) qui appellent des programmes modutils en root avec des données utilisateur doivent fournir exactement un paramètre utilisateur et doivent activer le « safe mode » à moins de créer des trous de sécurité. Voir modprobe(8) pour plus de détails sur le « safe mode ».
path[misc]=/lib/modules/1.1.5?/local
path[net]=/lib/modules/`uname -r`/net
Les directives peuvent être répétées plusieurs fois. Notez que certaines directives peuvent avoir un préfixe optionnel : add. Quand ce préfixe est utilisé, la nouvelle liste_de_modules sera ajoutée à la liste précédente au lieu de la replacer.
SÉMANTIQUE¶
UN_CHEMIN est un chemin complet vers la cible. Il est
possible d'utiliser des méta-caractères dans UN_CHEMIN,
y compris le résultat d'une commande comme `uname -r` ou
`kernelversion`.
Ces deux commandes sont comprises en interne par les utilitaires modutils
comme, respectivement, le numéro de version du noyau et la version du
noyau (par exemple : 2.4.10 et 2.4).
MOT est une séquence de caractères sans espace. Si un caractère ', " ou ` est trouvé dans la chaîne, alors tous les caractères jusqu'au ', " ou ` correspondant sont ajoutés à la chaîne, y compris les espaces. Tout MOT subira une expansion respectant les méta-caractères du shell. Si le résultat après expansion donne plus d'un mot, alors seulement le premier mot sera conservé.
EXPRESSION peut être :
- MOT compare_op MOT
- où compare_op est ==, !=, <, <=, >= ou >. Les MOTs sont comparés en tant que chaîne de caractères.
- -n MOT compare_op MOT
- où compare_op est ==, !=, <, <=, >= ou >. Les MOTs sont comparés en tant que valeurs numériques.
- MOT
- Si l'expansion de MOT échoue, ou si le résultat est "0", "false" ou "" (vide) alors le résultat prend la valeur FAUX. Sinon, le résultat prend la valeur VRAI.
- -f NOM_DE_FICHIER
- Teste si le fichier NOM_DE_FICHIER existe.
- -k
- Teste si « autoclean » est activé, c'est à dire demandé par le noyau.
- ! EXPRESSION
- La négation d'une expression est aussi une expression.
SYNTAXE¶
Ci-dessous la description des directives valables.
- define VARIABLE MOT
- Fait un putenv("VARIABLE=MOT"). Les variables d'environnement peuvent être créées et modifiées par cette directive. Elles peuvent donc être utilisées par toutes les commandes exécutées dans la session courante.
- depfile=UN_CHEMIN
- Ceci est le chemin du fichier de dépendances qui sera créé par depmod et utilisé par modprobe pour trouver les modules et ceux dont ils dépendent. Normalement la valeur par défaut devrait être utilisée, voir ci-dessous.
- if EXPRESSION
- Si l'expression est évaluée à VRAI alors
toutes les directives jusqu'au else, elseif ou endif
correspondant sont exécutées, sinon, elles sont
ignorées. Les directives if peuvent être
imbriquées jusqu'à 20 fois.
Note : évitez d'avoir des directives path exécutées de manière conditionnelle. modprobe a suffisamment de propriétés utiles pour qu'un chemin exécuté conditionnellement n'apporte rien d'autre que de la confusion. - else
- Si le if ou le elseif précédant correspondant a été évalué à FAUX alors les directives incluses entre le else et son endif correspondant seront évaluées.
- elseif EXPRESSION
- Si le if ou le elseif précédant correspondant a été évalué à FAUX et si l'expression de cette directive est évaluée à VRAI alors les directives jusqu'au elseif, else ou endif correspondant seront évaluées.
- endif
- Cette directive termine une chaîne de directive(s) if,
elseif ou else contrôlant l'évaluation des
directives du fichier de configuration.
Les directives else et elseif sont optionnelles.
if EXPRESSION n'importe quelles directives
elseif EXPRESSION n'importe quelles directives
else n'importe quelles directives
endif - include CHEMIN_VERS_UN_FICHIER_DE_CONFIGURATION
- Prendre en compte des plates-formes ou des configurations différentes avec un seul fichier peut être assez complexe. En utilisant la directive include, exécutée conditionnellement par des directives if, cela devient plus facile à gérer.
- insmod_opt=OPTIONS_GÉNÉRIQUES_POUR_INSMOD
- Si insmod a besoin d'options spéciales, indiquées nulle part ailleurs, elles peuvent être ajoutées par cette option, et seront utilisées pour toutes les invocations d'insmod. Les options par défaut d'insmod n'ont pas normalement besoin d'être modifiées, sauf pour gérer une situation très particulière.
- keep
- Si ce mot est trouvé sur une ligne avant toute ligne contenant la directive path, alors le chemin par défaut est sauvegardé et donc ajouté au nouveau chemin. Sinon le comportement normal est que le chemin par défaut est remplacé par le chemin donné.
- path=UN_CHEMIN
- path[ÉTIQUETTE]=UN_CHEMIN
- L'argument UN_CHEMIN indique un chemin supplémentaire de
recherche des modules. La directive path supporte une
étiquette optionnelle. Cela indique le type de modules dans le
répertoire donné et permet des réponses automatiques
de modprobe. L'étiquette est ajoutée au mot
clé « path » entre crochets. Si
l'étiquette est absente, « misc » est
utilisé.
Une étiquette très utile est boot, qui peut être utilisé pour tous les répertoires contenant des modules qui doivent être chargés lors du démarrage.
Notez que vous devez spécifier la directive keep pour éviter que les directives path n'écrasent les chemins par défaut. - generic_stringfile=UN_CHEMIN
- Ceci est le chemin vers le fichier generic_string qui sera créé par depmod et utilisé par les scripts d'installation qui ont besoin d'informations sur les modules. Normalement la valeur par défaut doit être utilisée, voir below.
- pcimapfile=UN_CHEMIN
- Ceci est le chemin vers le fichier pcimap qui sera créé par depmod et utilisé par les scripts d'installation pour trouver le module qui supporte un périphérique PCI. Normalement la valeur par défaut doit être utilisée, voir below.
- isapnpmapfile=UN_CHEMIN
- Ceci est le chemin vers le fichier isapnpmap qui sera créé par depmod et utilisé par les scripts d'installation pour trouver le module qui supporte un périphérique ISA PNP (NDT : Plug aNd Play). Normalement la valeur par défaut doit être utilisée, voir below.
- usbmapfile=UN_CHEMIN
- Ceci est le chemin vers le fichier usbmap qui sera créé par depmod et utilisé par les scripts d'installation pour trouver le module qui supporte un périphérique USB. Normalement la valeur par défaut doit être utilisée, voir below.
- parportmapfile=UN_CHEMIN
- Ceci est le chemin vers le fichier parportmap qui sera créé par depmod et utilisé par les scripts d'installation pour trouver le module qui supporte un périphérique parport. Normalement la valeur par défaut doit être utilisée, voir below.
- ieee1394mapfile=UN_CHEMIN
- Ceci est le chemin vers le fichier ieee1394mapfile qui sera créé par depmod et utilisé par les scripts d'installation pour trouver le module qui supporte un périphérique ieee1394mapfile. Normalement la valeur par défaut doit être utilisée, voir below.
- alias nom_alias résultat
- La directive alias peut être utilisée pour donner un
autre nom aux modules. Avec une ligne dans /etc/modules.conf qui
ressemble à ceci :
il est possible d'écrire modprobe iso9660 même s'il n'y a pas de fichier objet pour un tel module.
alias iso9660 isofs
Notez que la ligne :
fera en sorte que modprobe ignore une demande pour charger ce module. Un autre alias spécial est :
alias un_module off
qui fera que une requête pour un_module réussira toujours, mais aucun module ne sera vraiment chargé. Ceci peut être utilisé comme une base pour les piles créées par les directives above et below.
alias un_module null
alias a b
alias b a
Si le résultat final d'une recherche dans les alias ne correspond pas au nom d'un module, alors modprobe applique les expansions probe et probeall au résultat. Si ces expansions ne réussissent pas alors le module n'est pas trouvé. Cette procédure donne des résultats sensés.
Il est possible qu'un alias fasse correspondre le module A au module B et que le module A existe en même temps mais cette construction est ambiguë et doit être évitée. Pour des raisons historiques, le noyau a un module appelé « sound.o » mais les développeurs veulent aussi un alias « sound » pointant vers le module utilisé par la carte son de l'utilisateur, par exemple « alias sound sb ». Pour essayer de supporter ceci tout en maintenant le comportement défini par les alias, modprobe n'applique pas la résolution des alias pour un nom obtenu par modules.dep. Il n'est pas garanti que cela donne le bon résultat dans toutes les combinaisons d'alias et de nom réels, vous devez toujours éviter d'utiliser un alias avec le même nom qu'un module réel.
alias /dev/sg* /dev/sg
probeall /dev/sg scsi-hosts sg - [add] probe nom liste_de_modules
- [add] probeall nom liste_de_modules
- Ces directives ne peuvent être utilisées que quand nom est le nom d'un module demandé sur la ligne de commande de modprobe. Son effet est que quand une requête pour le module nom est faite, les modules indiqués dans liste_de_modules seront essayés, dans l'ordre donné. La différence entre les directives est que probe continuera jusqu'au premier succès, alors que probeall continuera jusqu'à la fin de la liste. La valeur de retour reflète le fait qu'au moins un module a été chargé correctement ou pas. Le préfixe add optionnel ajoute la nouvelle liste à une liste précédente au lieu de la remplacer.
- prune nom_de_fichier
- Le répertoire racine des modules du noyau contient des fichiers qui ne sont pas des modules, comme par exemple modules.dep, modules.generic_string, modules.pcimap, modules.isapnpmap, modules.usbmap, modules.parportmap, modules.ieee1394map, le lien symbolique vers le répertoire source du noyau et tout autre fichier que le processus d'installation veut conservé d'une compilation du noyau. Pour éviter que depmod lance des alertes disant « not an ELF file », ces fichiers peuvent apparaître dans la liste prune. depmod a une liste prune prédéfinie qui ne peut pas être enlevée car elle contient des fichiers qui existeront pour tout compilation du noyau. Si vous ajoutez vos propres fichiers au répertoire racine des modules, ajoutez une directive prune pour chaque nom_de_fichier. Note : La liste prune est utilisée uniquement lors de la recherche dans le répertoire racine d'un path, et seulement si le répertoire contient au moins un sous-répertoire dont le nom apparaît dans la liste des sous-répertoires standards, c'est à dire que ce chemin est un répertoire racine provenant d'une compilation du noyau. La liste prune n'a pas d'effet sur les sous-répertoires d'un path.
- [add] options [-k] module [OPTIONS_SPÉCIFIQUES_AU_MODULE]
- Tous les noms de modules, y compris les alias, peuvent avoir leurs propres
directives options. Les options indiquées pour un alias ont
une priorité supérieure aux options indiquées pour
des noms plus « basiques ». Cette règle
est utilisée pour résoudre les conflits entre les directives
options. Les options données sur la ligne de commande ont la
priorité la plus élevée. Si il y a -k devant
le nom de module, alors le module ne sera pas en mode
« autoclean » même si modprobe a
été appelé avec l'option -k (autoclean). Le
préfixe add optionnel ajoute la nouvelle liste à la
précédente au lieu de la remplacer. Si le résultat
d'un alias n'est pas un module réel alors toutes les
options qui ont été ajoutées par la
chaîne d' alias sont effacées avant l'appel à
probe[all]. Si une des OPTIONS_SPÉCIFIQUES_AU_MODULE
contient des caractères spéciaux pour le shell alors
l'option doit être mise entre '"..."'. Les ''
délimitent l'option dans modules.conf, les ""
délimitent l'option quand elle est passée au shell. Par
exemple :
abc='"def,ghi jkl (xyz)"' - [add] above module liste_de_modules
- Cette directive permet à un module de placer un ensemble de modules au-dessus de lui dans une pile de modules, comme on le voit dans la sortie de la commande lsmod(8). La directive above est plus utile dans des circonstances où la liste des dépendances est plus complexe que ce qui peut être décrit dans le fichier de dépendances modules.dep. C'est un cas d'optimisation des directives post-install et pre-remove. Notez qu'un échec pour installer le module n'influencera pas le code de retour de modprobe. Le préfixe add optionnel ajoute la nouvelle liste à la précédente au lieu de la remplacer.
- [add] below module liste_de_modules
- Cette directive permet à un module de placer un ensemble de modules au-dessous de lui-même dans une pile de modules, comme on le voit dans la sortie de la commande lsmod(8). La directive below est utile dans des circonstances où la liste des dépendances est plus complexe que ce qui peut être décrit dans le fichier de dépendances modules.dep. C'est un cas d'optimisation des directives post-install et pre-remove. Notez qu'un échec pour installer le module n'influencera pas le code de retour de modprobe. Le préfixe add optionnel ajoute la nouvelle liste à la précédente au lieu de la remplacer.
Les directives suivantes sont utiles pour exécuter des commandes particulières au chargement et au déchargement d'un module. Même les alias de modules peuvent avoir leurs propres commandes, qui seront exécutées dans le bon ordre avec les directives pour le nom réel du module.
- pre-install module commande
- Exécute commande avant d'installer le module indiqué. Voir la directive below également.
- install module commande
- Exécute commande au lieu de insmod par défaut pour installer le module indiqué.
- post-install module commande
- Exécute commande après avoir installé le module indiqué. Voir la directive above également.
- pre-remove module commande
- Exécute commande avant de désinstaller le module indiqué. Voir la directive above également.
- remove module commande
- Exécute commande au lieu du rmmod par défaut pour désinstaller le module indiqué.
- post-remove module commande
- Exécute commande après avoir désinstallé le module indiqué. Voir la directive below également.
- persistdir=nom_de_répertoire
- Quand rmmod supprime un module qui contient des paramètres persistants, il stocke les paramètres éventuellement modifiés sous le répertoire nom_de_répertoire. Quand modprobe charge un module qui contient des paramètres persistant, il regarde dans le répertoire nom_de_répertoire pour d'éventuelles valeurs précédentes. Vous devez donner à persistdir un nom de répertoire qui est accessible en lecture quand les modules sont chargés et accessible en écriture quand les modules sont déchargés. La valeur par défaut est /var/lib/modules/persist. Beaucoup de distributions Linux chargent leurs modules avant de monter les systèmes de fichiers, ce qui pose des problèmes pour les données persistantes. Si /var est dans une partition séparée et est montée après que les modules sont chargés alors insmod ne peut pas lire les données persistantes. Vous avez deux possibilités quand /var est une partition séparée :
- 1) Faire pointer persistdir vers un répertoire dans la partition racine, disons /lib/modules/persist. Ce qui impose que la partition racine soit accessible en écriture quand rmmod est lancé.
- 2) Charger tous les modules liés au support des systèmes de fichier d'abord, puis monter la partition /var et enfin le reste des modules. Ce qui impose que les modules supportant les systèmes de fichier n'ont pas de données persistantes.
CONFIGURATION PAR DÉFAUT¶
Si le fichier de configuration /etc/modules.conf n'existe pas, ou si une directive n'est pas redéfinie, les valeurs par défaut suivantes sont utilisées :
depfile=/lib/modules/`uname -r`/modules.dep
generic_stringfile=/lib/modules/`uname -r`/modules.generic_string
pcimapfile=/lib/modules/`uname -r`/modules.pcimap
isapnpmapfile=/lib/modules/`uname -r`/modules.isapnpmap
usbmapfile=/lib/modules/`uname -r`/modules.usbmap
parportmapfile=/lib/modules/`uname -r`/modules.parportmap
ieee1394mapfile=/lib/modules/`uname -r`/modules.ieee1394map
path[boot]=/lib/modules/boot
path[toplevel]=/lib/modules/`uname -r`
path[toplevel]=/lib/modules/`kernelversion`
path[toplevel]=/lib/modules/default
path[toplevel]=/lib/modules
persistdir=/var/lib/modules/persist
Il y a aussi un ensemble de directives alias et options par défaut. Cet ensemble évoluant sans cesse, il n'est pas listé ici. L'ensemble par défaut utilisé peut être obtenu par la commande modprobe -c avec un fichier /etc/modules.conf vide.
Toutes les directives options indiquent les options nécessaires à un module, comme par exemple dans :
Ces options seront remplacées par les options fournies dans le fichier /etc/modules.conf et sur la ligne de commande de modprobe.
modprobe de620 bnc=1
Souvenez-vous qu'il est possible d'avoir des directives options aussi bien pour les alias de modules que pour les noms réels de module. Ceci est utile par exemple pour le module dummy :
alias dummy0 dummy
options dummy0 -o dummy0
FICHIER CONFIGURATION ALTERNATIF¶
Pour des raisons historiques, si /etc/modules.conf n'existe pas, modutils utilisera le fichier /etc/conf.modules. Cependant, l'utilisation de ce nom historique est dépréciée et il devrait être remplacé par /etc/modules.conf. Cette version de modutils envoie un message d'alerte si /etc/conf.modules existe, les prochaines versions donnerons un message d'erreur et refuserons de charger les modules.
VOIR AUSSI¶
AUTEUR¶
Bjorn Ekwall <bj0rn@blox.se> Keith Owens <kaos@ocs.com.au>
TRADUCTION¶
Loïc Le Loarer, 2001. version 2.4.10 de modutils.
7 Décembre 1999 | 4th Berkeley Distribution |